package app

import (
	"github.com/gin-gonic/gin"
	api3 "guard/internal/app/admin/api"
	"guard/internal/app/oauth/api"
	api2 "guard/internal/app/user/api"
	"guard/internal/conf"
	"guard/internal/middleware"
	"net/http"
)

func InitRouter() *gin.Engine {

	// 0中间件
	router := gin.New()
	// logger中间件
	router.Use(gin.Logger())
	// 404中间件
	router.NoRoute(middleware.NotRouter)

	// html加载，处理了linux路径不同的情况
	router.LoadHTMLGlob("./public/*.html")

	// 首页的跳转
	router.GET("/", func(c *gin.Context) {
		c.Redirect(http.StatusMovedPermanently, "/login")
	})

	// 静态目录 + vite路由
	router.StaticFS("/admin/web/assets", http.Dir(conf.Conf.Web.WebAssetsPath))
	// *path：代表所有匹配的请求，不然要给每个router匹配一个路由，也解决了刷新不同url时，页面会出现空白。ps:需要带view路径，不能和上面assets静态资源路径冲突
	router.GET("/admin/web/view/*path", func(c *gin.Context) {
		c.File(conf.Conf.Web.WebRootPath)
	})

	// 初始化api
	api.InitOAuthRouter(router)
	api2.InitUserRouter(router)
	api3.InitAdminRouter(router)

	return router
}
